using System;
using System.Collections.Generic;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;
using PMServiceDesk.Utils.ManejoDatos;

namespace PMServiceDesk.BusinessLogic
{
    public class HistorialEstadoPaqueteTrabajoLogic
    {
        #region Variables

        private HistorialEstadoPaqueteTrabajoData _historialEstadoPaqueteTrabajoData;

        #endregion

        #region Constructores

        public HistorialEstadoPaqueteTrabajoLogic()
        {
            _historialEstadoPaqueteTrabajoData = new HistorialEstadoPaqueteTrabajoData();
        }

        #endregion

        #region Metodos

        public HistorialEstadoPaqueteTrabajoType CargarPorId(string id)
        {
            _historialEstadoPaqueteTrabajoData.FiltrarPorId(id);

            return _historialEstadoPaqueteTrabajoData.Cargar();
        }

        public void Grabar(HistorialEstadoPaqueteTrabajoType historialEstadoPaqueteTrabajo)
        {
            _historialEstadoPaqueteTrabajoData.Grabar(historialEstadoPaqueteTrabajo);
        }

        public void Eliminar(string id)
        {
            _historialEstadoPaqueteTrabajoData.Eliminar(id);
        }

        public List<HistorialEstadoPaqueteTrabajoType> CargarExplorador(string id,string paqueteTrabajoId,string estadoPaqueteTrabajoId,string usuarioRegistroId,DateTime fechaRegistro)
        {
            if(id != "") _historialEstadoPaqueteTrabajoData.FiltrarPorId(id);
            if(paqueteTrabajoId != "") _historialEstadoPaqueteTrabajoData.FiltrarPorPaqueteTrabajoId(paqueteTrabajoId);
            if(estadoPaqueteTrabajoId != "") _historialEstadoPaqueteTrabajoData.FiltrarPorEstadoPaqueteTrabajoId(estadoPaqueteTrabajoId);
            if(usuarioRegistroId != "") _historialEstadoPaqueteTrabajoData.FiltrarPorUsuarioRegistroId(usuarioRegistroId);

            return _historialEstadoPaqueteTrabajoData.CargarListaVista();
        }

        public List<HistorialEstadoPaqueteTrabajoType> CargarExploradorPaginado(HistorialEstadoPaqueteTrabajoType registroBusqueda, int paginaActual = 0, int cantidadMostrar = 0, string orderBy = "")
        {
            _historialEstadoPaqueteTrabajoData.FiltrarPorPaqueteTrabajoId(registroBusqueda.PaqueteTrabajoId);

            if (registroBusqueda.EstadoPaqueteTrabajo != "") _historialEstadoPaqueteTrabajoData.FiltrarPorEstadoPaqueteTrabajo(registroBusqueda.EstadoPaqueteTrabajo);
            if (registroBusqueda.UsuarioRegistro != "") _historialEstadoPaqueteTrabajoData.FiltrarPorUsuarioRegistro(registroBusqueda.UsuarioRegistro);
            if (registroBusqueda.FechaRegistro_Format != "") _historialEstadoPaqueteTrabajoData.FiltrarPorFechaRegistroExacta(ConvertFormat.Char_To_Date(registroBusqueda.FechaRegistro_Format));

            return _historialEstadoPaqueteTrabajoData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }
        #endregion
    }
}
